Asm api版本定义中的java按位OR运算符
我在浏览asm的源代码时发现了以下定义
http://grepcode.com/file/repo1.maven.org/maven2/org.jodd/jodd-proxetta/3.5.2/jodd/asm5/Opcodes.java
int ASM4 = 4 << 16 | 0 << 8 | 0;
有人能解释一下为什么需要按位或吗?
为什么只是int ASM4 = 4
你可以在下面搜索框中键入要查询的问题!
我在浏览asm的源代码时发现了以下定义
http://grepcode.com/file/repo1.maven.org/maven2/org.jodd/jodd-proxetta/3.5.2/jodd/asm5/Opcodes.java
int ASM4 = 4 << 16 | 0 << 8 | 0;
有人能解释一下为什么需要按位或吗?
为什么只是int ASM4 = 4
# 1 楼答案
值不是4;262144。大概他们是这样写的,因为他们认为它是一个由三部分组成的数字4.0.0,每个部分占一个字节。如果他们写了
int ASM4 = 262144;
,读者就不清楚了。表达式在编译时求值,因此没有运行时开销